SMARTDRV
이 명령어는 연속 확장 메모리(eXtended Memory)에 디스크 캐시를 만들기 위해 사용하는 것으로 디스크 캐시는 상대적으로 느린 디스크에 직접 입출력하는 속도가 빠른 시스템 메모리에 일단 저장한 후 시간이 있을 대 디스크에 기록한다. 이렇게 함으로써 DOS가 하는 디스크 작업 속도를 아주 빠르게 수행할 수 있도록 해준다.
만약, 컴퓨터를 시동함과 동시에 항상 디스크 캐시 프로그램을 사용하려면 AUTOEXEC.BAT에 SMARTDRV 명령어를 추가한다.
SMARTDRV 명령어는 EMM386이나 윈도우의 386 확장 모드 같은 상태를 지원하지 않는 하드디스크 제어기와의 호환성도 고려하여 이중 버퍼를 사용한다.
이처럼 특정 하드디스크를 위하여 이중 버퍼가 필요한 경우에는 CONFIG.SYS 파일에서 장치 제어기로 사용하여 이중 버퍼를 구성해야 한다. 윈도우에서는 이중 버퍼를 구성하기 위한 명령을 MSDOS.SYS 파일에 설정한다.
SMARTDRV는 윈도우가 실행된 다음에는 사용될 수 없다.
여기서 윈도우라는 것은 윈도우 3.1을 의미하는 것으로 윈도우 95 이상 버전에서는 더 이상 SMARTDRV를 사용하지 않는다. 다만, 윈도우를 설치할 때의 디스크 입출력 속도 개선과 도스용 프로그램을 위해서만 제공할 뿐이다.
■ 명령어 위치
윈도우가 설치되어 있는 하드디스크(C:\Windows)에 실행 파일 형태로 존재하는 외부 명령어
■ 사용법
SMARTDRV [[drive [+]|[-]]....] [/X] [/U] [/C|/R] [/F|/N] [/L] [/Q|/V|/S]
[size] [winsize]] [[/E:elementsize] [/B:buffersize]
일단 SMARTDRV가 한번 사용된 이후로 두 번째부터는 다음과 같은 형식을 사용한다.
SMARTDRV [[drive [+]|[-]]....] [/X] [/C|/R] [/F|/N] [/Q|/S]
■ 옵션 및 매개변수

none | 아무런 옵션이나 매개변수 없이 SMARTDRV가 단독으로 사용되면 현재 드라이브에 설정되어 있는 디스크 캐시의 상태를 보여준다.
[[drive +|-] | 캐시를 제어할 수 있는 디스크 드라이브 문자를 지정할 수 있다. 더하기(+) 기호를 포함하면 지정된 드라이브에서 캐시를 사용할 수 있으며 빼기(-) 기호를 포함하면 지정된 드라이브에서 캐시를 사용할 수 없다. 다중 디스크 드라이브에서도 지정할 수 있다. 캐시를 끄거나(-) 켤(+) 수 있다. 드라이브 문자 뒤에 더하기(+) 기호를 사용하면 읽고 쓰는데 모두 캐시가 사용되고 빼기(-)기호를 사용하면 읽고 쓰는데 모두 캐시가 사용되지 않는다. 만약, 더하기(+) 기호나 빼기(-) 기호를 생략하고 드라이브만 지정하면 읽을 때만 캐시가 사용되고 기록할 때는 디스크 캐시가 사용되지 않는다. 드라이브 문자를 지정하지 않으면 플로피디스크와 CD-ROM 드라이브, DOS의 인터링크를 사용하여 만들어진 드라이브는 읽을 때만 캐시를 사용한다. 드라이브 문자로 하드디스크를 지정하면 읽기와 쓰기에 대하여 모두 디스크 캐시가 사용된다. 그러나, 네트워크 드라이브, 플래시 메모리 카드는 디스크 캐시를 사용할 수 없다.
/x | 이 옵션은 모든 드라이브에 설정되어 있는 쓰기 디스크 캐시의 사용을 취소한다. 만약, 쓰기 디스크 캐시를 다시 활성화하려면 각각의 드라이브에 대하여 [[drive +|-] 매개변수를 사용하여야 한다.
/u | 이 옵션은 CD-ROM 드라이브에만 사용할 수 있다. SMARTDRV 명령어를 사용할 때 이 옵션과 함께 사용되면 사용자의 시스템에 비록 CD-ROM 드라이브가 있다고 할지라도 CD-ROM을 위한 디스크 캐시를 만들지 않고, CD-ROM 드라이브를 나타내는 드라이브 문자를 매개변수로 사용할 수 없다. 만약, 이 옵션을 사용하지 않고 SMARTDRV가 사용된다면 CD-ROM의 디스크 캐시를 활성화하거나 비활성 상태로 만들기 위하여 [[drive +|-] 매개변수를 사용할 수 있다.
/c | 모든 캐시 정보를 메모리로부터 하드디스크로 기록한다. 이 옵션은 컴퓨터를 끄기 바로 전 메모리에 남아 있을지 모르는 디스크에 대한 정보를 하드디스크로 옮길 때 사용한다. SMARTDRV는 컴퓨터를 <Ctrl+Alt+Del> 키를 이용해 재시동할 경우에는 캐시 메모리에 있는 내용을 디스크로 옮기고 재시동한다.
/r | 캐시 메모리를 비우고 SMARTDRV 프로그램을 다시 시작한다.
/f | 이 옵션은 SMARTDRV를 메모리에 탑재할 때 지정하지 않아도 되는 디폴트 값으로 사용되는 옵션으로, 명령어를 종료한 후 즉시 캐시 버퍼에 있는 내용을 디스크로 기록하도록 하기 위해 사용하는 옵션이다. 이 옵션은 /N 옵션과 함께 사용할 수 없다.
/n | 이 옵션은 캐시 버퍼에 있는 데이터를 시스템이 쉬고 있을 때에만 디스크에 기록하도록 하기 위해 사용하는 옵션으로, 이 옵션을 지정하면 사용자가 작업을 하고 있지 않을 때 캐시 버퍼에 있는 내용을 디스크에 기록한다. 따라서, 이 옵션을 사용하는 경우에는 작업이 종료됨과 동시에 컴퓨터를 끄지 않도록 조심해야 한다. 만약, 이 옵션을 사용하였다면 컴퓨터를 끄기 전에 /C 옵션을 사용하여 캐시 버퍼에 남아있는 내용을 디스크로 옮긴 다음에 컴퓨터를 끄도록 해야 한다.
/L | SMARTDRV 프로그램이 상위 메모리 블럭(UMB)으로 자동으로 올라가는 것을 막아준다. 이 옵션은 응용 프로그램이 상위 메모리를 사용할 때 사용한다. SMARTDRV의 이중 버퍼를 사용하고 시스템이 느리게 실행되면 AUTOEXEC.BAT 파일에 SMARTDRV 명령어 라인에 /L 옵션을 추가한다.
/q | SMARTDRV가 시작할 때 나타나는 메시지와 오류 메시지가 화면에 나타나지 않도록 한다. 디폴트로 SMARTDRV는 상태 메시지를 나타내지 않는데, 시동되는 동안 SMARTDRV가 오류를 만나면 이 옵션에 상관없이 오류 메시지를 표시한다. 이 옵션은 /V와 /S 옵션과는 함께 사용할 수 없다.
/v | SMARTDRV가 시작될 때 나타나는 상태 메시지와 오류 메시지를 화면에 나오게 한다. 디폴트로 SMARTDRV는 오류 조건과 만나는 경우를 제외하고는 어떤 메시지도 표시하지 않는다. 이 옵션은 /Q 옵션과 같이 사용할 수 없다.
/s | 캐시 버퍼의 개수와 각 버퍼의 용량, 캐시 적중 개수와 실패 개수 등 SMARTDRV에 대한 추가적인 정보를 화면에 표시한다.
size | SMARTDRV가 연속 확장 메모리에 만들 초기 디스크 캐시의 크기를 KB 단위로 지정한다. 디스크 캐시의 크기는 SMARTDRV의 성능에 영향을 미친다. 일반적으로, 캐시 메모리의 크기를 크게 지정하면 디스크를 읽어 들이는 횟수를 줄여 컴퓨터의 속도를 높여준다. 이 초기 캐시 크기를 지정하지 않으면 SMARTDRV는 컴퓨터 시스템이 가지고 있는 메모리 크기에 따라 적절한 값을 정한다.
winsize | 윈도우에서 사용하기 위해 SMARTDRV가 크기를 감소시킬 디스크 캐시의 크기를 KB 단위로 지정한다. 윈도우를 시작하면 SMARTDRV는 윈도우가 되도록 시스템 메모리를 많이 사용하도록 캐시 메모리의 크기를 줄인다. 윈도우가 종료되면 자동으로 캐시 메모리의 크기가 원래의 보통 크기로 되돌려진다. 윈도우 캐시 크기 매개변수는 SMARTDRV가 크기를 최소로 감소시킬 캐시 메모리를 지정한다. 기본값은 사용하는 시스템 메모리 크기에 따라 결정되는데, 만일 초기 캐시 크기를 윈도우 캐시 크기보다 작게 지정하면 초기 캐시 크기를 윈도우 캐시 크기에 맞도록 설정한다.
/e:elementsize | SMARTDRV가 한번에 옮길 수 있는 캐시의 총 크기를 바이트 단위로 지정한다. 1024, 2048, 4096, 8192 등의 값을 사용할 수 있고, 기본값은 8192이다. 값이 크게 되면 SMARTDRV는 더 많은 상용 메모리를 사용한다.
/b:buffersize | 미리 읽어 들일 버퍼의 크기를 지정한다. 이 버퍼는 응용 프로그램이 하드디스크에서 정보를 읽어들일 때 SMARTDRV가 참고하는 추가 사항이다. 예를 들면, 응용프로그램이 512K 크기의 파일에서 정보를 읽어 들인다면 SMARTDRV는 메모리에 지정된 버퍼 크기 만큼의 정보를 읽어들여 메모리에 저장해 놓는다. 그런 다음 응용프로그램이 그 파일에서 정보를 읽어들이려고 하면 메모리에 있는 내용을 대신 넘겨주게 된다. 버퍼 크기의 디폴트 값은 16K이다. 버퍼 크기를 크게 지정하게 되면 SMARTDRV는 더 많은 상용 메모리를 사용하게 된다.

■ 참고 사항
☞ 연속 확장 메모리의 사용
SMARTDRV는 연속 확장 메모리에 디스크 캐시를 만든다. 따라서, 연속 확장 메모리를 사용하기 위하여 먼저 HIMEM.SYS나 LIM 4.0을 지원하는 기타 다른 연속 확장 메모리 관리자가 CONFIG.SYS에서 DEVICE 명령어를 사용하여 설치되어야 한다.
☞ SMARTDRV 장치 제어기를 상위 메모리 영역으로 탑재하기
상위 메모리 영역을 사용할 수 있다면 DOS는 SMARTDRV를 자동으로 상위 메모리 영역으로 탑재한다. 따라서, SMARTDRV를 실행할 때에는 LOADHIGH 명령을 사용할 필요가 없다.
☞ SMARTDRV와 압축 드라이브
SMARTDRV는 공간 늘림 프로그램을 사용하여 만들어진 압축 드라이브에 대해서는 디스크 캐시를 지원하지 않는다. 하지만, 물리적인 드라이브에서의 압축 드라이브 파일에 대해서는 캐시를 사용한다. 물론 SMARTDRV가 압축된 드라이브에 대해 캐시를 사용할 수 있지만 그러면 오히려 컴퓨터의 속도는 더 느려진다. 이것은 압축 드라이브에 캐시를 사용하면 하나의 데이터에 대해 압축된 드라이브와, 물리적인 드라이브의 두 곳에서 두번 캐시를 통해야 처리되기 때문이다.
☞ SMARTDRV와 CD-ROM 드라이브
만약, 사용자의 시스템에 CD-ROM 드라이브가 설치되어 있고, CD-ROM 드라이브를 위한 디스크 캐시를 사용하려면 반드시 SMARTDRV 명령어를 사용하기 전에 CD-ROM 드라이브를 위한 MSCDEX 명령어를 메모리에 탑재하여야 한다.
그렇지 않으면 SMARTDRV는 CD-ROM 드라이브를 인식하지 못하기 때문에 CD-ROM을 위한 디스크 캐시를 만들지 않는다.
따라서, CD-ROM에 디스크 캐시를 사용하기 위해서는 DOS 편집기나 기타 텍스트 에디터를 이용하여 MSCDEX 명령어가 SMARTDRV 명령어 앞에 오도록 수정해야 한다.
SMARTDRV가 CD-ROM을 위한 디스크 캐시를 사용하고 있는지 알아보려면 프롬프트 상에서 다음과 같이 아무런 옵션이나 매개변수 없이 단독으로 사용하여 확인할 수 있다.
smartdrv
만약, CD-ROM 드라이브를 위한 디스크 캐시를 사용하지 않으려면 SMARTDRV 명령어를 사용할 때 /U 옵션을 함께 사용하기 바란다.
☞ 연속 확장 메모리와 디스크 캐시의 크기
SMARTDRV는 사용자가 디스크 캐시의 크기를 지정하지 않으면 시스템에 있는 연속 확장 메모리의 크기에 따라 초기 디스크 캐시와 윈도우 디스크 캐시의 크기를 적절히 지정한다. 다음은 시스템에 있는 연속 확장 메모리 크기에 따른 초기 캐시 크기와 윈도우 캐시 크기의 값에 대한 표이다.

연속 확장 메모리 | 초기 디스크 캐시 | 윈도우 디스크 캐시
1 MB 이하 | 모든 연속 확장 메모리 | 0 (캐시 없음)
1 MB ∼ 2 MB | 1 MB | 256 KB
2 MB ∼ 4 MB | 1 MB | 512 KB
4 MB ∼ 6 MB | 2 MB | 1 MB
6 MB 이상 | 2 MB | 2 MB

☞ 사용상의 주의
컴퓨터를 끄거나 재시동시키기 전에 SMARTDRV가 캐시 메모리의 내용을 디스크로 기록했는지 확인한다. 만약 컴퓨터를 재시동하려면 프롬프트 상에서 "smartdrv /c" 라고 입력하면 캐시 메모리의 내용을 하드디스크로 모두 기록한다. 모든 디스크의 동작이 멈춘 후 안전하게 컴퓨터를 끈다.
단, <Ctrl+Alt+Del> 키를 이용해 컴퓨터를 재시동할 경우는 제외된다. 이것은 DOS가 자동으로 디스크 캐시에 있는 정보를 하드디스크로 기록한 후에 재시동하기 때문이다.
☞ SMARTDRV를 이용하여 디스크의 쓰기 가능 캐시 설정하기
SMARTDRV를 처음 실행할 때 플로피디스크의 경우에는 쓰기 캐시가 설정되지 않는다. 이 경우, 사용자는 프롬프트 상에서 플로피디스크를 위한 쓰기 디스크 캐시를 만들어 주어야 한다.
예를 들어, 플로피디스크 드라이브 A에 대하여 쓰기 캐시를 활성화하려면 다음과 같이 프롬프트 상에서 SMARTDRV 명령어를 사용한다.
smartdrv a+
위와는 반대로, SMARTDRV는 하드디스크에 있어서는 디폴트로 읽기와 쓰기 디스크 캐시를 설치하는데 쓰기 디스크 캐시를 비활성 상태로 변경하려면 다음과 같이 프롬프트 상에서 SMARTDRV 명령어를 사용한다.
smartdrv c-
■ 사용 예
SMARTDRV로 256KB의 디스크 캐시를 만들려면 AUTOEXEC.BAT 파일에 다음과 같음 명령어 라인을 입력한다.
c:\dos\smartdrv
SMARTDRV.EXE 파일이 드라이브 C 드라이브의 DOS 디렉토리에 있고, 디스크 캐시의 크기가 2048KB이고, 캐시의 크기가 최소한 1024K 이하로 줄어들지 못하도록 설치하려면 다음과 같이 AUTOEXEC.BAT 파일에 입력한다.
c:\dos\smartdrv 2048 1024
모든 플로피디스크 드라이브의 캐시를 중단하고, D 드라이브에 기록 캐시를 가능하도록 하려면 다음의 명령을 AUTOEXEC.BAT 파일에 입력한다.
c:\dos\smartdrv a- b- d+
컴퓨터의 전원을 끄기 전이나 재시동 옵션을 눌러 컴퓨터를 재시동시키기 전에 프롬프트 상에서 다음 명령을 사용해 캐시 메모리에 있는 정보를 하드디스크로 기록 하는 것이 좋다.
smartdrv /c
위의 예에서 컴퓨터를 재시동하기 위하여 <Ctrl+Alt+Delete> 키를 누르는 경우는 제외된다. 이 키를 이용하여 컴퓨터를 재시동하는 경우 DOS는 자동으로 캐시 버퍼에 있는 모든 내용을 디스크로 옮긴 다음에 재시동하기 때문이다.